package cz.stv.pecinovsky.utility;



/*******************************************************************************
 * Instance třídy {@code Rozměr} představují přepravky uchovávající informace
 * o rozměrech objektu.
 * Proto jsou jejich atributy deklarovány jako veřejné konstanty.
 *
 * @author  Rudolf PECINOVSKÝ
 * @version 1.10.2678 — 2011-10-27
 */
public class Rozměr
{
//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================

    /** Šířka objektu. */
    public final int šířka;

    /** Výška objektu. */
    public final int výška;



//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     * Vytvoří přepravku uchovávající zadané rozměry.
     *
     * @param šířka  Šířka objektu
     * @param výška  Výška objektu
     */
    public Rozměr( int šířka, int výška )
    {
        this.šířka = šířka;
        this.výška = výška;
    }



//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================

    /***************************************************************************
     * Vrátí uloženo velikost šířky objektu.
     *
     * @return  Velikost šířky
     */
    public int getŠířka()
    {
        return šířka;
    }


    /***************************************************************************
     * Vrátí velikost výšky objektu.
     *
     * @return  Velikost výšky
     */
    public int getVýška()
    {
        return výška;
    }



//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Vrátí informaci o tom, představuje-li instance zadaná v parametru
     * stejný rozměr.
     *
     * @param  o   Testovaná instance
     * @return Je-li zadaná instance rozměrem se stejnými hodnotami atributů,
     *         vrátí {@code true}, jinak vrátí {@code false}.
     */
    @Override
    public boolean equals( Object o )
    {
        if (! (o instanceof Rozměr))  {
            return false;               //==========>
        }
        Rozměr r = (Rozměr)o;
        return (r.šířka == šířka) && (r.výška == výška);
    }


    /***************************************************************************
     * Vrací textovou reprezentaci (podpis) dané instance
     * používanou především k ladicím účelům.
     *
     * @return Požadovaná textová reprezentace
     */
    @Override
    public String toString()
    {
        return "Rozměr:[šířka=" + šířka + ", výška=" + výška + "]";
    }

//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//    /***************************************************************************
//     * Testovací metoda.
//     */
//    public static void test()
//    {
//        Rozměr inst = new Rozměr();
//    }
//    /** @param args Parametry příkazového řádku - nepoužívané. */
//    public static void main( String[] args )  {  test();  }
}
